package com.hhq.demo.service.impl;

import com.hhq.demo.bean.Courier;
import com.hhq.demo.bean.User;
import com.hhq.demo.bean.UserList;
import com.hhq.demo.dao.UserDao;
import com.hhq.demo.dao.impl.UserDaoImpl;
import com.hhq.demo.service.UserService;

import java.util.List;
import java.util.Map;

/**
 * @author HHQ
 * @date 2021年12月16日
 */
public class UserServiceImpl implements UserService {

    UserDao userDao = new UserDaoImpl();

    /**
     * 查询控制台需要的数据
     *
     * @return map集合数据
     */
    @Override
    public Map<String, Object> consoleData() {
        return userDao.consoleData();
    }

    /**
     * 查询所有用户信息
     *
     * @return 用户集合
     */
    @Override
    public List<UserList> listAll() {
        return userDao.listAll();
    }

    /**
     * 分页查询用户信息
     *
     * @param offset     起始索引
     * @param pageNumber 每页显示数量
     * @return 用户信息集合
     */
    @Override
    public List<UserList> listLimit(Integer offset, Integer pageNumber) {
        return userDao.listLimit(offset,pageNumber);
    }

    /**
     * 新增用户
     *
     * @param user 用户
     * @return 受影响的行数
     */
    @Override
    public int insert(User user) {
        return userDao.insert(user);
    }

    /**
     * 修改用户信息
     *
     * @param id    要修改的用户的id
     * @param phone 原手机号
     * @param user  要修改的用户的信息
     * @return 受影响的行数
     */
    @Override
    public int update(Integer id, String phone, User user) {
        int flag = 0;
        if (user.getPhone() == null) {
            flag = userDao.update(id, user);
        } else {
            // TODO:此处修改手机号码之前还需要将user表中录入的手机号码以及收件人姓名修改
            flag = userDao.updateAndPhone(id,user);
        }
        return flag;
    }

    /**
     * 根据取件码删除用户
     *
     * @param id id
     * @return 受影响的行数
     */
    @Override
    public int deleteById(Integer id) {
        return userDao.deleteById(id);
    }

    /**
     * 根据手机号查询用户信息
     *
     * @param phone 用户手机号
     * @return 用户信息
     */
    @Override
    public User findByPhone(String phone) {
        return userDao.findByPhone(phone);
    }

    /**
     * 根据手机号码认证并修改用户信息
     *
     * @param user 用户信息
     * @return 受影响的行数
     */
    @Override
    public int updateByPhone(User user) {
        return userDao.updateByPhone(user);
    }

    /**
     * 根据旧手机号码修改用户名
     *
     * @param phone    旧手机号码
     * @param username 要修改的用户信息
     * @return 受影响的行数
     */
    @Override
    public int updateUsername(String phone, String username) {
        return userDao.updateUsername(phone,username);
    }

    /**
     * 修改登录时间
     *
     * @param id id
     */
    @Override
    public void updateLoginTimeById(Integer id) {
        userDao.updateLoginTimeById(id);
    }
}
